4.5 Read Transactions
这一节描述了 DFI 读事务 的信号和时序要求,主要涉及从 MC(内存控制器) 到 PHY(物理层) 数据传输的过程。DFI 读事务处理了数据的捕获和返回过程,确保数据从 PHY 返回到 MC 时符合协议的时序要求。
关键概念和信号
- dfi_rddata_en:该信号用于指示在 DFI 总线上什么时候传输读数据。它的断言与实际的数据传输次数相关。
- dfi_rddata:读数据本身。
- dfi_rddata_valid:对于 LPDDR3 和 LPDDR2 DRAMs,指示读数据是否有效。
- dfi_rddata_dnv:对于 LPDDR2 DRAMs,指示数据是否无效。
- dfi_rddata_dbi:在 DDR4 系统中使用的信号,用于指示数据是否包含 DBI(Data Bus Inversion)信息。
- dfi_rddata_cs_n:可选的目标数据芯片选择信号,用于指示哪个数据路径芯片被选中。
- trddata_en 和 tphy_rdlat:时序参数,控制从 DFI 接口传输数据的延迟。
这些信号和时序参数共同确保数据在 DFI 总线上正确传输,并且符合时序规范。
DFI 读事务的时序要求
- dfi_rddata_en 必须与实际的数据传输次数相匹配,即在每次传输数据时,
dfi_rddata_en
信号应保持断言状态,直到数据完全传输完毕。 - dfi_rddata_cs_n(目标芯片选择信号)是可选的,如果使用该信号,它会指示目标数据路径的芯片选择值。对于多个芯片的系统,MC 需要根据不同的芯片选择进行数据传输和时序调整。
- trddata_en 和 tphy_rdlat 是两个时序参数,用于控制从读命令发出到数据返回的延迟。
trddata_en
是一个固定的延迟,而tphy_rdlat
是一个最大值,允许 PHY 进行调整。
4.5.1 Read Transaction Sequence(读事务序列)
这部分详细描述了 DFI 读事务的过程,包含以下步骤:
- 发出读命令:
- 读命令是从内存控制器发送到 PHY 的,标志着一个读事务的开始。
- trddata_en 周期延时:
trddata_en
是内存控制器和 PHY 协调的延迟周期。该延迟确保数据传输的同步性。- 如果使用了
dfi_rddata_cs_n
,还需要增加一个tphy_rdcslat
周期,用于对齐芯片选择信号。
- 读命令与
dfi_rddata_en
信号的同步:trddata_en
周期后,dfi_rddata_en
信号会被断言,用来标志着数据传输的开始。这个信号会保持断言状态,直到所有的连续数据被返回。
- 连续读命令的数据传输:
- 如果是连续读命令,
dfi_rddata_en
信号会被保持断言状态,直到整个数据流结束。 - 对于非连续的读命令,
trddata_en
周期后,dfi_rddata_en
信号会被断言,然后保持直到所有数据传输完成。
- 如果是连续读命令,
- 处理多个读命令的连续数据:
- 在连续的数据传输中,
dfi_rddata_en
信号可能覆盖多个读命令的数据传输,直到所有数据都传输完毕。dfi_rddata_en
的去断言标志着数据传输的结束。
- 在连续的数据传输中,
- 返回数据和
dfi_rddata_valid
信号:- 当数据传输完成时,**
dfi_rddata_valid
信号**会被断言,表示数据有效并且可以被读取。 - 对于 LPDDR2 系统,
dfi_rddata_dnv
信号的时序与dfi_rddata
信号相同,指示数据是否有效。
- 当数据传输完成时,**
- 数据传输:
dfi_rddata
信号传输实际的数据。- 如果启用了 DBI(Data Bus Inversion),
dfi_rddata_dbi
信号与dfi_rddata
信号同时传输,表示数据的反转情况。
关键时序和参数
- tphy_rdcslat:该时序参数由 PHY 定义,用于指定读命令与目标芯片选择信号(
dfi_rddata_cs_n
)之间的对齐方式。这个参数确保了读命令与芯片选择信号的正确同步。 - tphy_rdcsgap:当读命令针对不同的芯片选择时,PHY 可能需要额外的延迟。
tphy_rdcsgap
定义了 PHY 在处理不同芯片选择之间的间隔时间。 - tphy_rdcslat + dfi_rw_length + tphy_rdcsgap:这些时序参数定义了芯片选择信号与数据传输之间的最小时间,确保数据传输的正确对齐和同步。
- trddata_en - tphy_rdcslat:这是从新的芯片选择信号断言到
dfi_rddata_en
信号断言之间的最大延迟。
例子和图示
图20 : 展示了一个简单的读事务,其中
dfi_rddata_en
信号被断言 2 个周期,以指示期望返回 2 个周期的数据,并且数据将在tphy_rdlat
周期后返回。图21 : 显示了一个单次读事务,其中数据返回的时间少于最大延迟。数据返回的时间比最大PHY读延迟少一个周期。
- 图22 : 显示了一个被中断的读命令。对于每个读事务,
dfi_rddata_en
信号必须在 4 个周期内保持有效。然而,由于第一个读命令被中断,dfi_rddata_en
信号在第一个事务的部分期间有效,并在第二个事务期间保持完全有效。在这种情况下,dfi_rddata_en
信号在读命令之间不会被取消。
- 在图23中,时序参数的值设置使得两个事务的读数据作为一个连续的数据流返回。因此,
dfi_rddata_en
信号和dfi_rddata_valid
信号会在整个读数据流期间保持有效。
- 在图24中,
trddata_en
时序和读命令之间的时序导致dfi_rddata_en
信号在命令之间被取消断言。因此,dfi_rddata_valid
信号也会在命令之间取消断言,导致dfi_rddata
数据流变得不连续。
- 在图25中,两个事务的有效
tphy_rdlat
值不同。这导致了一个情况,其中dfi_rddata_valid
信号在命令之间保持断言状态,并且dfi_rddata
数据流是连续的。
- 数据可能在比最大延迟更少的周期内返回到DFI。在图26中,第一个读取数据传输在三周期内返回,尽管
tphy_rdlat
定时参数设置为四周期。第二个读取数据传输在最大四周期内返回。
- LPDDR3 和 LPDDR2 DRAM 定义了一种新的事务类型——模式寄存器读取(MRR)。从 DFI 的角度来看,模式寄存器读取与其他读取命令相似,并使用相同的信号。图27展示了一个 LPDDR3 或 LPDDR2 存储设备的 MRR 事务。
- 在图28中,
dfi_rddata_valid
信号是独立传输的。该图显示了dfi_rddata_en
和dfi_rddata_valid
之间的数据字有一一对应关系;dfi_rddata_valid
字不需要是连续的。
- 图29 “使用
dfi_rddata_cs_n
的读取命令”显示了三个读取命令,第二个和第三个命令之间有一个间隔
4.5.2 DBI - Read
DBI功能是在读取数据传输过程中对数据进行选择性反转的一种方式。该功能主要用于改善信号的完整性,减少由于电磁干扰(EMI)或其他传输问题导致的数据传输错误。在DFI协议中,phydbi_mode
参数决定是否启用DBI特性。
phydbi_mode
参数:此参数仅在系统支持DBI时需要。它确定是否启用DBI以及如何应用该功能。在系统需要DBI时,DRAM必须接收并使用DBI输入,进而对读取命令中的数据进行选择性反转。
4.5.2.1 MC DBI支持(phydbi_mode==0
)
当MC支持DBI时,PHY负责捕获DRAM读取命令的数据,并通过dfi_wrdata_mask
和dfi_rddata_dbi
信号将数据传输到MC。
dfi_rddata_dbi
信号:这个信号的时序与dfi_rddata
信号相同,DBI数据与对应的dfi_rddata
总线信号同时发送。也就是说,dfi_rddata_dbi
信号与dfi_rddata
信号并行工作,用于标记是否对数据进行反转。- 频率比系统中的DBI信号:在支持频率比的系统中(例如4:1频率比),
dfi_rddata_dbi
信号会被扩展,类似于dfi_rddata
信号,并且每个相位都会定义一个信号。例如,在4:1频率比的系统中,DBI信息会通过以下信号传输:dfi_rddata_dbi_w0
、dfi_rddata_dbi_w1
、dfi_rddata_dbi_w2
和dfi_rddata_dbi_w3
。 - 时序相同:DBI信号的时序与
dfi_rddata_wN
输出相同,数据会按顺序返回。
4.5.2.2 PHY DBI支持(phydbi_mode==1
)
当PHY生成写入DBI数据时,dfi_rddata_dbi
信号就不再需要。
- PHY控制DBI:在
phydbi_mode==1
的情况下,PHY会生成DBI数据,MC不再需要发送dfi_rddata_dbi
信号。此时,PHY会负责根据phydbi_mode
的配置来处理DBI数据的反转。
本文链接: https://talent-tudou.github.io/2024/12/28/DFI/DFI Spec-Read Transactions/
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!